package com.httpDemo.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
import org.springframework.boot.system.JavaVersion;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

import com.httpDemo.doMain.User;

/**
 * 使用@Profile注解可根据application.properties配置文件中spring.profiles.active激活的环境，
 * 来使bean生效。如果配置文件中没有激活环境，则不会将含有该注解的bean注入到ioc容器中。
 * 
 * @author Administrator
 *
 */
@Configuration
@ConditionalOnJava(JavaVersion.EIGHT) // 只有jdk1.8才能加载这个配置类
@ConditionalOnClass({ User.class }) // 系统中必须存在User这个类配置类才能生效
//@ConditionalOnMissingClass({"User"}) // 系统中必须不存在User这个类配置类才能生效
//@ConditionalOnBean({User.class}) // ioc容器中必须存在User这个bean配置类才能生效
//@ConditionalOnMissingBean({User.class}) // ioc容器中必须不存在User这个bean配置类才能生效
public class ProfileConfig {

	@Bean("profile")
	@Profile("dev") // 如果在配置文件中spring.profiles.active激活的是dev，则该bean生效
	public User profile() {
		return new User(1, "zhangsan-dev", "北京市朝阳区");
	}

	@Bean("profile")
	@Profile("pro") // 如果在配置文件中spring.profiles.active激活的是pro，则该bean生效
	public User profile2() {
		return new User(1, "zhangsan-pro", "北京市朝阳区");
	}

	/**
	 * 如果配置文件没有spring.profiles.active激活环境，则该bean生效
	 * 
	 * @return
	 */
	@Bean("profile")
	public User profile3() {
		return new User(1, "zhangsan", "北京市朝阳区");
	}
}
